Мой Справочник | PHP | Yii

MVC-framework on PHP

Official Docs      Руководство на русском      krajee.com
Установка
1-1. XAMMP

Скачать установочный файл с оф. сайта link
Директория для разворачивания: ~/../../opt/lampp/htdocs

sudo su
// установка от рута
./xampp-linux-x64-7.2.5-0-installer.run

// запуск менеджера
sudo su
cd ~/../../opt/lampp && ./manager-linux-x64.run
1-1. XAMMP - Virtual Hosts Включить поддержку вирт. хостов
/opt/lampp/etc/httpd.conf

# Include etc/extra/httpd-vhosts.conf

Добавление вирт. хоста в систему
/etc/hosts

127.0.0.1 some-site.loc

Добавление вирт. хоста в XAMPP
/opt/lampp/etc/extra/httpd-vhosts.conf

<VirtualHost *:80>
  ServerAdmin admin@some-site.loc
  DocumentRoot "/opt/lampp/htdocs/some-site"
  ServerName some-site.loc
  ErrorLog "logs/some-site.example.com-error_log"
  CustomLog "logs/some-site.example.com-access_log" common
</VirtualHost>
2-1. Composer curl -s http://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo composer global require "fxp/composer-asset-plugin:~1.3"

2-2. Composer - Удаление delete ~/home/user/.composer
delete ~/home/user/.config/composer
delete ~/usr/bin/composer
sudo apt-get remove composer
sudo apt-get remove --auto-remove composer
sudo apt-get purge composer
sudo apt-get purge --auto-remove composer
3-1. Установка Yii2 - I способ Composer cd ~/../../opt/lampp/htdocs
sudo composer create-project yiisoft/yii2-app-advanced yii2
cd yii2
sudo php init (0, yes)
http://localhost/yii2/frontend/web/
3-2. Установка Yii2 - II способ Архив Скачать архив advanced c
https://www.yiiframework.com/download

Распаковать его в:
~/../../opt/lampp/htdocs/project-name

Инициализировать проект
sudo php init

Запустить сервер
Controllers (контроллеры, экшены)
Роутинг /index.php?r=site%2Fabout
<?php
  namespace frontend\controllers;
  use yii\web\Controller;

  class NewController extends Controller {
    public function actionIndex() {
      // output some html
      return '<h1>Some new page</h1>';
      ...
      // output new view
      return $this->render('index');

      ...
      $text = 'Hello World!';
      $names = ['Ivanov', 'Petrov', 'Sidorov'];
      ...
      // output new view with parameters by $var
      return $this->render('index', [
        'var_in_view'  => $text,
        'var_in_view2' => $names,
      ]);

      // output new view with parameters by compact
      return $this->render('index', compact('text', 'names'));
    }
  }
site - название контроллера в /frontend/controllers/SiteController.php

about - название вида в директории site
/frontend/views/site/about.php

Название Класса (КлассController.php в /frontend/controllers/) - название директории в папке /frontend/views/класс

Название экшена (actionНазвание) - название файла в директоии /frontend/views/класс/название

Если контроллер вложен в какую-либо директорию, например, /frontend/controllers/admin/UserController, то вложен должен быть и вид (/frontend/views/admin/user/название_экшена). Тогда url будет (/index.php?r=admin/user%2Fsome)

Views (виды)
Шаблоны страниц frontend/views/
Структура
Подключение БД common/config/main-local.php dbname="..."
Минификация скриптов frontend/config/main.php 'enableMinify' => false || !YII_DEBUG
Директория запуска frontend/web
Мета-данные в head frontend/config/params.php
Всё, что загрузили с админки frontend/web/upload В основном изображения
Главный файл запуска frontend/web/index.php Его не трогать, в нём настроки и подключения
Вставить дату Если нужно динамически менять год <?= date('Y') ?>
Страницы frontend/views/
Виджеты, попапы, инклуды frontend/components/
Скелет всех страниц (header, footer, pop-ups) frontend/views/layouts/main.php
Скрипты frontend/assets/AppAsset.php
Debug-режим frontend/web/index.php Для отключения нужно поменять true => false,
dev => env
defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', ' dev');
Настройки frontend/config/main.php 'assetManager' Компилятор scss
Путь в корневую директорию frontend/web/ include_once $_SERVER['DOCUMENT_ROOT'] . "blocks/block1.php";
Путь в корневую директорию frontend/web/ include_once $_SERVER['DOCUMENT_ROOT'] . "blocks/block1.php";
Контроллеры для запуска страниц frontend/web/FormController.php
render("index"); }
    // страница /form/step2
    public function actionStep2() { return $this->render("step2"); }
    // страница /form/step3
    public function actionStep3() { return $this->render("step3"); }
    // страница /form/step4
    public function actionStep4() { return $this->render("step4"); }
    // страница /form/step5
    public function actionStep5() { return $this->render("step5"); }
    // страница /form/step6
    public function actionStep6() { return $this->render("step6"); }
            }

Если проект на Yii2 скачен через git, то нужно проект инициализировать из корневой директории, выполнив команду в php-консоли init и выбрать [0] Development режим, потом нажать yes для генерации файлов


Подключить скрипт только на текущую страницу

$this->registerJsFile("js/jquery.some-plugin.min.js", ['depends' => 'yii\web\YiiAsset']);

$this->registerCssFile("css/come-styles.min.css", ['depends' => 'yii\web\YiiAsset']);

Подключение новых страниц

1. Создаём новую страницу somepage.php с заголовком в директорию frontend/views/
<? $this->title="Some page" ?>


2. Создаём контроллер для новой страницы SomepageController.php в директории frontend/controllers/, название в camel-case как название новой страницы

<?php
namespace frontend\controllers;

use common\models\Coach;
use common\models\Travel;
use common\models\TravelReview;
use Yii;
use common\models\LoginForm;
use frontend\models\PasswordResetRequestForm;
use frontend\models\ResetPasswordForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;

/**
 * Site controller
 */
class SomepageController extends \app\components\SeoController
{
    public function actionIndex(){
        return $this->render('/somepage');
    }
}
  

3. После этого можно заходить на данную страницу site.loc/somepage

Картинки какие-то

yii1.jpg yii2.jpg